package com.xuan.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 日期工具
 */
public class DateUtil {

    /**
     * 年月日（格式：yyyy-MM-dd）
     */
    public static String DATE_FORMAT = "yyyy-MM-dd";
    /**
     * 年月日（格式：yyyy/MM/dd）
     */
    public static String DATE_FORMAT_BIAS = "yyyy/MM/dd";
    /**
     * 年月日（格式：yyyy年M月d日）
     */
    public static String DATE_FORMAT_CHINESE = "yyyy年M月d日";
    /**
     * 年月日时分秒（格式：yyyy-MM-dd HH:mm:ss）
     */
    public static String DATE_TIME_FORMAT_1 = "yyyy-MM-dd HH:mm:ss";
    /**
     * 年月日时分秒（格式：yyyy-MM-dd-HH-mm-ss）
     */
    public static String DATE_TIME_FORMAT_2 = "yyyy-MM-dd-HH-mm-ss";
    /**
     * 年月日时分秒（格式：yyyy/MM/dd HH:mm:ss）
     */
    public static String DATE_TIME_FORMAT_BIAS = "yyyy/MM/dd HH:mm:ss";
    /**
     * 年月日时分秒（格式：yyyy年M月d日 HH:mm:ss）
     */
    public static String DATE_TIME_FORMAT_CHINESE_1 = "yyyy年M月d日 HH:mm:ss";
    /**
     * 年月日时分秒（格式：yyyy年M月d日HH时mm分ss秒）
     */
    public static String DATE_TIME_FORMAT_CHINESE_2 = "yyyy年M月d日HH时mm分ss秒";

//****************************************************************************************************************************************************

    // 自定义日期格式

    /**
     * 获取当前日期字符串（自定义日期格式）
     *
     * @param dateformat 自定义日期格式
     * @return String型日期
     */
    public static String getCustomDateStr(String dateformat) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(dateformat);
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取指定日期字符串（自定义日期格式）
     *
     * @param date       Date型日期
     * @param dateformat 自定义日期格式
     * @return String型日期
     */
    public static String getCustomDateStr(Date date, String dateformat) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(dateformat);
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

    /**
     * 获取指定日期字符串（自定义日期格式）
     *
     * @param dateStr    String型日期
     * @param dateformat 自定义日期格式
     * @return String型日期
     */
    public static String getCustomDateStr(String dateStr, String dateformat) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(dateformat);
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(stringToDate(dateStr));
        return datestr;

    }

//----------------------------------------------------------------------------------------------------------------------------------------------------

    // 日期类型相互转换

    /**
     * 将[字符串日期]转为[Date型日期]（格式：yyyyMMdd）
     *
     * @param dateStr 日期字符串
     * @return Date型日期
     */
    public static Date stringToDate(String dateStr) {

        if (null == dateStr || "".equals(dateStr)) {
            return null;
        }

        Date date;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT);
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));

        try {
            date = df.parse(dateStr);
        } catch (ParseException e) {
            date = DateUtil.stringToDate(dateStr, "yyyyMMdd");
        }

        return date;

    }

    /**
     * 将[Date型日期]转为[字符串日期]（格式：yyyy-MM-dd）
     *
     * @param date Date型日期
     * @return String型日期（如：2000-01-01）
     */
    public static String dateToString(Date date) {

        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT);
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        return df.format(date);

    }

    /**
     * 将[字符串日期]转为[Date型日期]（自定义日期格式）
     *
     * @param dateStr    日期字符串
     * @param dateformat 日期格式
     * @return Date型日期
     */
    public static Date stringToDate(String dateStr, String dateformat) {

        Date date = new Date();
        SimpleDateFormat df = new SimpleDateFormat(dateformat);
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));

        try {
            date = df.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;

    }

    /**
     * 将[Date型日期]转为[字符串日期]（自定义日期格式）
     *
     * @param date       Date型日期
     * @param dateformat 日期格式
     * @return String型日期
     */
    public static String dateToString(Date date, String dateformat) {

        SimpleDateFormat df = new SimpleDateFormat(dateformat);
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        return df.format(date);

    }

//----------------------------------------------------------------------------------------------------------------------------------------------------

    // 获取日期数据（年月日）

    /**
     * 获取当前日期字符串（格式：yyyy-MM-dd）
     *
     * @return String型日期（如：2000-01-01）
     */
    public static String getCurrentDate() {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT); // 年月日（格式：yyyy-MM-dd）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取当前日期字符串（格式：yyyy/MM/dd）
     *
     * @return String型日期（如：2000/01/01）
     */
    public static String getCurrentBiasDate() {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_BIAS); // 年月日（格式：yyyy/MM/dd）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取当前日期字符串（格式：yyyy年MM月dd日）
     *
     * @return String型日期（如：2000年01月01日）
     */
    public static String getCurrentChineseDate() {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_CHINESE); // 年月日（格式：yyyy年M月d日）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取指定日期字符串（格式：yyyy-MM-dd）
     *
     * @return String型日期（如：2000-01-01）
     */
    public static String getCustomDate(Date date) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT); // 年月日（格式：yyyy-MM-dd）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

    /**
     * 获取指定日期字符串（格式：yyyy/MM/dd）
     *
     * @return String型日期（如：2000/01/01）
     */
    public static String getCustomBiasDate(Date date) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_BIAS); // 年月日（格式：yyyy/MM/dd）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

    /**
     * 获取指定日期字符串（格式：yyyy年MM月dd日）
     *
     * @return String型日期（如：2000年01月01日）
     */
    public static String getCustomChineseDate(Date date) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_FORMAT_CHINESE); // 年月日（格式：yyyy年M月d日）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

//----------------------------------------------------------------------------------------------------------------------------------------------------

    // 获取日期数据（年月日时分秒）

    /**
     * 获取当前日期字符串（格式：yyyy-MM-dd HH:mm:ss）
     *
     * @return String型日期（如：2000-01-01 06:00:00）
     */
    public static String getCurrentDateTime() {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_1); // 年月日时分秒（格式：yyyy-MM-dd HH:mm:ss）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取当前日期字符串（格式：：yyyy/MM/dd HH:mm:ss）
     *
     * @return String型日期（如：2000/01/01 06:00:00）
     */
    public static String getCurrentBiasDateTime() {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_BIAS); // 年月日时分秒（格式：：yyyy/MM/dd HH:mm:ss）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取当前日期字符串（格式：yyyy年M月d日 HH:mm:ss）
     *
     * @return String型日期（如：2000年01月01日 06:00:00）
     */
    public static String getCurrentChinese1DateTime() {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_CHINESE_1); // 年月日时分秒（格式：yyyy年M月d日 HH:mm:ss）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取当前日期字符串（格式：yyyy年M月d日HH时mm分ss秒）
     *
     * @return String型日期（如：2000年01月01日06时00分00秒）
     */
    public static String getCurrentChinese2DateTime() {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_CHINESE_2); // 年月日时分秒（格式：yyyy年M月d日 HH时mm分ss秒）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(new Date());
        return datestr;

    }

    /**
     * 获取指定日期字符串（格式：yyyy-MM-dd HH:mm:ss）
     *
     * @param date Date型日期
     * @return String型日期（如：2000-01-01 06:00:00）
     */
    public static String getCustomDateTime(Date date) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_1); // 年月日时分秒（格式：yyyy-MM-dd HH:mm:ss）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

    /**
     * 获取指定日期字符串（格式：：yyyy/MM/dd HH:mm:ss）
     *
     * @param date Date型日期
     * @return String型日期（如：2000/01/01 06:00:00）
     */
    public static String getCustomBiasDateTime(Date date) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_BIAS); // 年月日时分秒（格式：：yyyy/MM/dd HH:mm:ss）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

    /**
     * 获取指定日期字符串（格式：yyyy年M月d日 HH:mm:ss）
     *
     * @param date Date型日期
     * @return String型日期（如：2000年01月01日 06:00:00）
     */
    public static String getCustomChinese1DateTime(Date date) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_CHINESE_1); // 年月日时分秒（格式：yyyy年M月d日 HH:mm:ss）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

    /**
     * 获取指定日期字符串（格式：yyyy年M月d日HH时mm分ss秒）
     *
     * @param date Date型日期
     * @return String型日期（如：2000年01月01日06时00分00秒）
     */
    public static String getCustomChinese2DateTime(Date date) {

        String datestr;
        SimpleDateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_CHINESE_2); // 年月日时分秒（格式：yyyy年M月d日 HH时mm分ss秒）
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        datestr = df.format(date);
        return datestr;

    }

//----------------------------------------------------------------------------------------------------------------------------------------------------

    // 获取详细日期数据

    /**
     * 获取日期的 年
     *
     * @param date Date型日期
     * @return 年
     */
    public static int getYearOfDate(Date date) {

        int year;

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        year = cd.get(Calendar.YEAR);

        return year;
    }

    /**
     * 获取日期的 月
     *
     * @param date Date型日期
     * @return 月
     */
    public static int getMonthOfDate(Date date) {

        int month;

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        month = cd.get(Calendar.MONTH) + 1;

        return month;

    }

    /**
     * 获取日期的 日
     *
     * @param date Date型日期
     * @return 日
     */
    public static int getDayOfDate(Date date) {

        int day;

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        day = cd.get(Calendar.DAY_OF_MONTH);

        return day;

    }

    /**
     * 获取星期
     *
     * @param date Date型日期
     * @return 星期
     */
    public static int getWeekOfDate(Date date) {

        int week;

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        week = cd.get(Calendar.DAY_OF_WEEK) - 1;

        return week;
    }

    /**
     * 判断是否是闰年
     *
     * @param date Date型日期
     * @return true:是  false:否
     */
    public static boolean isLeapYEAR(Date date) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        int year = cd.get(Calendar.YEAR);

        return ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0));

    }

    /**
     * 获取输入日期的当月第一天
     *
     * @param date 输入日期
     * @return 当月第一天
     */
    public static Date getFirstDayOfMonth(Date date) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        cd.set(Calendar.DAY_OF_MONTH, 1);

        return cd.getTime();

    }

    /**
     * 获得输入日期的当月最后一天
     *
     * @param date Date型日期
     */
    public static Date getLastDayOfMonth(Date date) {
        return DateUtil.addDay(DateUtil.getFirstDayOfMonth(DateUtil.addMonth(date, 1)), -1);
    }

    /**
     * 根据整型数表示的年月日，生成Date型日期
     *
     * @param year  年
     * @param month 月
     * @param day   日
     * @return Date型日期
     */
    public static Date getDateByYMD(int year, int month, int day) {

        Calendar cd = Calendar.getInstance();
        cd.set(year, month - 1, day);

        return cd.getTime();

    }

    /**
     * 获取年周期对应 天
     *
     * @param date  Date型日期
     * @param iYear 年数（负数表示之前）
     * @return 天
     */
    public static Date getYearCycleOfDate(Date date, int iYear) {
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);

        cd.add(Calendar.YEAR, iYear);

        return cd.getTime();
    }

    /**
     * 获取月周期对应 天
     *
     * @param date Date型日期
     * @param i    月份
     * @return 天
     */
    public static Date getMonthCycleOfDate(Date date, int i) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);

        cd.add(Calendar.MONTH, i);

        return cd.getTime();

    }

    /**
     * 计算 fromDate 到 toDate 相差多少年
     *
     * @param fromDate 前时间段
     * @param toDate   后时间段
     * @return 年数
     */
    public static int getYearByMinusDate(Date fromDate, Date toDate) {
        Calendar df = Calendar.getInstance();
        df.setTime(fromDate);

        Calendar dt = Calendar.getInstance();
        dt.setTime(toDate);

        return dt.get(Calendar.YEAR) - df.get(Calendar.YEAR);
    }

    /**
     * 计算 fromDate 到 toDate 相差多少月
     *
     * @param fromDate 前时间段
     * @param toDate   后时间段
     * @return 月数
     */
    public static int getMonthByMinusDate(Date fromDate, Date toDate) {
        Calendar df = Calendar.getInstance();
        df.setTime(fromDate);

        Calendar dt = Calendar.getInstance();
        dt.setTime(toDate);

        return dt.get(Calendar.YEAR) * 12 + dt.get(Calendar.MONTH) -
                (df.get(Calendar.YEAR) * 12 + df.get(Calendar.MONTH));
    }

    /**
     * 计算 fromDate 到 toDate 相差多少天
     *
     * @param fromDate 前时间段
     * @param toDate   后时间段
     * @return 天数
     */
    public static long getDayByMinusDate(Object fromDate, Object toDate) {

        Date f = DateUtil.chgObject(fromDate);

        Date t = DateUtil.chgObject(toDate);

        long fd = f.getTime();
        long td = t.getTime();

        return (td - fd) / (24L * 60L * 60L * 1000L);
    }

    /**
     * 在输入日期上增加（+）或减去（-）年份
     *
     * @param date  输入日期
     * @param iYear 要增加或减少的年数
     */
    public static Date addYear(Date date, int iYear) {
        Calendar cd = Calendar.getInstance();

        cd.setTime(date);

        cd.add(Calendar.YEAR, iYear);

        return cd.getTime();
    }

    /**
     * 在输入日期上增加（+）或减去（-）月份
     *
     * @param date   输入日期
     * @param iMonth 要增加或减少的月分数
     */
    public static Date addMonth(Date date, int iMonth) {
        Calendar cd = Calendar.getInstance();

        cd.setTime(date);

        cd.add(Calendar.MONTH, iMonth);

        return cd.getTime();
    }

    /**
     * 在输入日期上增加（+）或减去（-）天数
     *
     * @param date 输入日期
     * @param iDay 要增加或减少的天数
     */
    public static Date addDay(Date date, int iDay) {
        Calendar cd = Calendar.getInstance();

        cd.setTime(date);

        cd.add(Calendar.DAY_OF_MONTH, iDay);

        return cd.getTime();
    }

    /**
     * 在输入日期上增加（+）或减去（-）小时数
     *
     * @param date  输入日期
     * @param iHour 要增加或减少的小时数
     */
    public static Date addHour(Date date, int iHour) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        cd.add(Calendar.HOUR_OF_DAY, iHour);

        return cd.getTime();

    }

    /**
     * 在输入日期上增加（+）或减去（-）分钟数
     *
     * @param date    输入日期
     * @param iMinute 要增加或减少的分钟数
     */
    public static Date addMinute(Date date, int iMinute) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        cd.add(Calendar.MINUTE, iMinute);

        return cd.getTime();

    }

    /**
     * 在输入日期上增加（+）或减去（-）秒数
     *
     * @param date    输入日期
     * @param iSecond 要增加或减少的秒数
     */
    public static Date addSecond(Date date, int iSecond) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        cd.add(Calendar.SECOND, iSecond);

        return cd.getTime();

    }

    /**
     * 在输入日期上增加（+）或减去（-）分钟数、秒数
     *
     * @param date    输入日期
     * @param iMinute 要增加或减少的分钟数
     * @param iSecond 要增加或减少的秒数
     */
    public static Date addSecond(Date date, int iMinute, int iSecond) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        cd.add(Calendar.MINUTE, iMinute); // 分钟
        cd.add(Calendar.SECOND, iSecond); // 秒

        return cd.getTime();

    }

    /**
     * 在输入日期上增加（+）或减去（-）小时数、分钟数、秒数
     *
     * @param date    输入日期
     * @param iHour   要增加或减少的小时数
     * @param iMinute 要增加或减少的分钟数
     * @param iSecond 要增加或减少的秒数
     */
    public static Date addSecond(Date date, int iHour, int iMinute, int iSecond) {

        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        cd.add(Calendar.HOUR_OF_DAY, iHour); // 小时
        cd.add(Calendar.MINUTE, iMinute); // 分钟
        cd.add(Calendar.SECOND, iSecond); // 秒

        return cd.getTime();

    }

    /**
     * 將Object型日期转换为Date型日期
     *
     * @param date Object型日期
     * @return Date型日期
     */
    public static Date chgObject(Object date) {

        if (date instanceof Date) {
            return (Date) date;
        }

        if (date instanceof String) {
            return DateUtil.stringToDate((String) date);
        }

        return null;

    }

    /**
     * 计算年龄
     *
     * @param birthday 生日日期
     * @param calcDate 要计算的日期点
     * @return 年龄
     */
    public static int calcAge(Date birthday, Date calcDate) {

        int cYear = DateUtil.getYearOfDate(calcDate);
        int cMonth = DateUtil.getMonthOfDate(calcDate);
        int cDay = DateUtil.getDayOfDate(calcDate);
        int bYear = DateUtil.getYearOfDate(birthday);
        int bMonth = DateUtil.getMonthOfDate(birthday);
        int bDay = DateUtil.getDayOfDate(birthday);

        if (cMonth > bMonth || (cMonth == bMonth && cDay > bDay)) {
            return cYear - bYear;
        } else {
            return cYear - 1 - bYear;
        }

    }

    /**
     * 从身份证中获取出生日期
     *
     * @param iDno 身份证号码
     * @return 出生日期
     */
    public static String getBirthDayFromIDCard(String iDno) {

        Calendar cd = Calendar.getInstance();

        if (iDno.length() == 15) {
            cd.set(Calendar.YEAR, Integer.parseInt("19" + iDno.substring(6, 8)));
            cd.set(Calendar.MONTH, Integer.parseInt(iDno.substring(8, 10)) - 1);
            cd.set(Calendar.DAY_OF_MONTH, Integer.parseInt(iDno.substring(10, 12)));
        } else if (iDno.length() == 18) {
            cd.set(Calendar.YEAR, Integer.parseInt(iDno.substring(6, 10)));
            cd.set(Calendar.MONTH, Integer.parseInt(iDno.substring(10, 12)) - 1);
            cd.set(Calendar.DAY_OF_MONTH, Integer.parseInt(iDno.substring(12, 14)));
        }

        return DateUtil.dateToString(cd.getTime());

    }

    /**
     * 按生日获取年龄
     *
     * @param date String型日期
     * @return 年龄
     */
    public static long getAgeByBirthday(String date) {

        Date birthday = stringToDate(date, "yyyy-MM-dd");
        long sec = new Date().getTime() - birthday.getTime();

        return sec / (1000 * 60 * 60 * 24) / 365;

    }

    /**
     * 获取当前时间戳
     */
    public static Long currentTimestamp() {

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        df.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        String s = df.format(new Date());
        Long l = null;
        try {
            l = (df.parse(s).getTime() / 1000);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return l;

    }

    /**
     * 获取日期的[年月日时分秒]
     *
     * @param date 日期
     * @return 年月日时分秒
     */
    public static Map<String, Integer> getDateMap(Date date) {

        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        Map<String, Integer> map = new HashMap<>();
        map.put("year", cal.get(Calendar.YEAR)); // 年
        map.put("month", cal.get(Calendar.MONTH) + 1); // 月
        map.put("day", cal.get(Calendar.DATE)); // 日
        map.put("hour", cal.get(Calendar.HOUR_OF_DAY)); // 时
        map.put("minute", cal.get(Calendar.MINUTE)); // 分
        map.put("second", cal.get(Calendar.SECOND)); // 秒

        return map;

    }

    /**
     * 年月日时分秒 转 Date
     *
     * @param year   年
     * @param month  月
     * @param day    日
     * @param time   时
     * @param minute 分
     * @param second 秒
     * @return date型日期
     */
    public static Date timeToDate(int year, int month, int day, int time, int minute, int second) {

        Date date = null;
        String sDate = (year + "-" + month + "-" + day + " " + time + ":" + minute + ":" + second);
        try {
            date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;

    }


}
